package com.chennan.book.domain.model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.Data;

@Data
public class FInvoiceApplication implements Serializable {
    /**
     * 自增id
     */
    private Long id;

    /**
     * 发票申请编号
     */
    private String invoiceApplicationNo;

    /**
     *
     */
    private String baiwangNo;

    /**
     * B_Bill表id
     */
    private Long billId;

    /**
     * 外部发票申请编号
     */
    private String externalInvoiceApplicationNo;

    /**
     * 项目id
     */
    private Long projectId;

    /**
     * 客户id
     */
    private Long customerId;

    /**
     * 客户名称
     */
    private String customerName;

    /**
     * 客户部门id
     */
    private Long customerDepartmentId;

    /**
     * 客户部门名称
     */
    private String customerDepartmentName;

    /**
     * 开票类型（0：专票，1：普票，2：电子发票）
     */
    private Integer invoiceType;

    /**
     * 统一社会信用代码/税务登记号
     */
    private String socialCreditCode;

    /**
     * 申请状态（0:草稿、1:待审核、2:已驳回、3:已审核）
     */
    private Integer applicationStatus;

    /**
     * 第三方平台服务费率
     */
    private BigDecimal partyCServiceFeeRate;

    /**
     * 发票申请人
     */
    private Long createUserId;

    /**
     * 发票抬头
     */
    private String invoiceTitle;

    /**
     * 发票抬头id
     */
    private Long invoiceTitleId;

    /**
     * 申请方（发票申请新增登陆用户的机构）
     */
    private Long applyOrganizationId;

    /**
     * 开票方（organization表id）
     */
    private Long invoiceOfferId;

    /**
     * 销方税号
     */
    private String sellSocialCreditCode;

    /**
     * 发票申请金额
     */
    private BigDecimal invoiceAmount;

    /**
     * 价税合计(实际发票金额)
     */
    private BigDecimal invoiceAmountActual;

    /**
     * 发票金额(实际不含税金额)
     */
    private BigDecimal invoiceNoTaxAmount;

    /**
     * 综合税率
     */
    private BigDecimal invoiceTotalTaxRate;

    /**
     * 开票税额
     */
    private BigDecimal invoiceTaxAmount;

    /**
     * 开户行
     */
    private String bank;

    /**
     * 开户账号
     */
    private String accountNo;

    /**
     * 开票电话
     */
    private String phoneOnInvoice;

    /**
     * 开票地址
     */
    private String addressOnInvoice;

    /**
     * 发票号码
     */
    private String invoiceNumber;

    /**
     * 发票代码
     */
    private String invoiceCode;

    /**
     * 发票链接
     */
    private String invoiceUrl;

    /**
     * 校验码
     */
    private String checkCode;

    /**
     * 开票时间
     */
    private LocalDateTime invoiceCreateTime;

    /**
     * 开票终端
     */
    private String invoiceTerminalCode;

    /**
     * 开票人
     */
    private Long openInvoiceUserId;

    /**
     * 预计回款时间
     */
    private LocalDate expectPaidDate;

    /**
     * 是否需要邮寄（0：不需要，1：需要）
     */
    private Boolean needPost;

    /**
     * 邮寄状态（0：初始；1：待邮寄；2：邮寄中；3：已完成；）
     */
    private Integer postStatus;

    /**
     * 收票人省id
     */
    private Long receiverAddressProvinceId;

    /**
     * 收票人市id
     */
    private Long receiverAddressCityId;

    /**
     * 收票人区县id
     */
    private Long receiverAddressCountyId;

    /**
     * 收票人详细地址
     */
    private String recipientAddressLine;

    /**
     * 收票人
     */
    private String receiverName;

    /**
     * 收票人电话
     */
    private String receiverPhone;

    /**
     * 快递公司
     */
    private Integer expressCompany;

    /**
     * 快递单号
     */
    private String expressNumber;

    /**
     * 是否需要收据（0：不需要，1：需要）
     */
    private Boolean needReceipt;

    /**
     * 发票备注
     */
    private String memoOnInvoice;

    /**
     * 申请备注
     */
    private String applicationMemo;

    /**
     * 备注1
     */
    private String memo1;

    /**
     * 备注2
     */
    private String memo2;

    /**
     * 备注3
     */
    private String memo3;

    /**
     * 备注4
     */
    private String memo4;

    /**
     * 备注5
     */
    private String memo5;

    /**
     * 发票状态：{0：未开具；1:正数发票开具成功, 2:正数发票已作废, 3:正数发票已红冲, 4:负数发票开具成功}
     */
    private Integer invoiceStatus;

    /**
     * 开票状态：（0：待开票:1：处理中:2：开票失败:3：已开票:4：作废审核:5：作废驳回:6：作废失败、7：作废成功、8：审核通过）；
     */
    private Integer invoiceCreateStatus;

    /**
     * 发票接收邮箱
     */
    private String invoiceEmail;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 修改时间
     */
    private LocalDateTime updateTime;

    /**
     * 作废类型（1：作废；2：红冲）
     */
    private Integer invalidType;

    /**
     * 作废申请时间
     */
    private LocalDateTime invalidCreateTime;

    /**
     * 作废时间
     */
    private LocalDateTime invoiceInvalidTime;

    /**
     * 作废开票终端
     */
    private String invalidTerminalCode;

    /**
     * 审批备注
     */
    private String approveMemo;

    /**
     * 弃审原因
     */
    private String cancelApproveMemo;

    /**
     * 作废原因
     */
    private String invalidMemo;

    /**
     * 关联原始发票id（红字发票使用）
     */
    private Long relationId;

    /**
     * 退回原因
     */
    private String backReason;

    /**
     * 承诺退回时间
     */
    private LocalDateTime backPromiseTime;

    /**
     * 纸质票是否收到（0：否，1：是）
     */
    private Boolean paperInvoiceReceived;

    /**
     * 是否调用百旺接口生成的发票：{0:否(线下/手动), 1:是}
     */
    private Boolean useBaiwang;

    /**
     * 收款已核销金额
     */
    private BigDecimal writeOffAmount;

    /**
     * 收款核销中金额
     */
    private BigDecimal writeOffAmountOnGoing;

    /**
     * 收款已核销折让金额
     */
    private BigDecimal allowanceAmount;

    /**
     * 收款核销中折让金额
     */
    private BigDecimal allowanceAmountOnGoing;

    /**
     * 自定义开票名称顺序
     */
    private String manualOpenInvoiceOrder;

    /**
     * 专柜同步标志（0:未同步，1:已同步）
     */
    private Boolean bmInvoiceSyncStatus;

    /**
     * 专柜邮寄信息同步标志（0:未同步，1:已同步）
     */
    private Boolean bmPostSyncStatus;

    /**
     * 含税标志（0：不含税，1：含税）
     */
    private Boolean taxSign;

    /**
     * 发票明细合并（0：不合并，1：合并）
     */
    private Boolean mergeItem;

    /**
     * 是否删除（0：否，1：是）
     */
    private Boolean deleted;

    private static final long serialVersionUID = 1L;
}

